package org.example.sysrole.service;

import org.example.sysrole.entity.SysRole;

import java.util.List;

/**
 * 系统角色业务接口
 */
public interface SysRoleService {

    /**
     * 插入系统角色
     *
     * @param sysRole 系统角色对象，包含角色名称、权限标识、状态等信息
     * @return 插入成功返回影响行数，失败返回0
     */
    int insertSysRole(SysRole sysRole);

    /**
     * 根据角色ID删除系统角色（物理删除或逻辑删除）
     *
     * @param roleId 角色ID，唯一标识一个角色
     * @return 删除成功返回影响行数，失败返回0
     */
    int deleteSysRole(Long roleId);

    /**
     * 更新系统角色信息
     *
     * @param sysRole 系统角色对象，包含要更新的角色信息，如角色名称、权限标识、状态等
     * @return 更新成功返回影响行数，失败返回0
     */
    int updateSysRole(SysRole sysRole);

    /**
     * 查询系统角色详情
     *
     * @param roleId 角色ID，唯一标识一个角色
     * @return 返回对应的系统角色对象，若未找到返回 null
     */
    SysRole selectSysRoleById(Long roleId);

    /**
     * 分页/条件查询系统角色列表
     *
     * @param sysRole 查询条件对象，可包含角色名称、状态、数据权限范围等筛选条件
     *                如果传入 null，则返回所有角色列表
     * @return 返回符合条件的系统角色列表，若无符合条件数据返回空集合
     */
    List<SysRole> selectSysRoleList(SysRole sysRole);
}